package com.tbm.console.base.service;

import com.tbm.console.proj.entity.SystemUser;
import com.tbm.console.util.PageData;
import org.springframework.data.domain.Page;

import java.util.List;

public interface CommonService<T> {

    /**
     * 查询全部
     * @return
     */
    List<T> findAll();

    /**
     * 全部分页
     * @param start
     * @param length
     * @return
     */
    List<T> findAll(Integer start, Integer length);

    /**
     * 按条件查询
     * @param pageData
     * @return
     */
    List<T> findAll(PageData pageData);
    /**
     * 按条件分页查询
     * @param pageData
     * @param start
     * @param length
     * @return
     */
    List<T> findAll(PageData pageData,Integer start,Integer length);


    /**
     * 查询全部条数
     * @return
     */
    long count();

    /**
     * 按照条件查询数目
     * @param t
     * @return
     */
    long count(T t);

    /**
     * 按照条件查询数目
     * @param  pageData
     * @return
     */
    long count(PageData pageData);

    /**
     * 通过ID删除
     * @param id
     * @return
     */
    boolean deleteById(Integer id);

    /**
     * 通过Iterable方式来删除
     * @param iterable
     * @return
     */
    boolean deleteByIds(Iterable<T> iterable);

    /**
     * 通过T增删改
     * @param t
     * @return
     */
    T save(T t);

    /**
     * 通过list批量增删改
     * @param ts
     * @return
     */
    List<T> saveAll(List<T> ts);


    /**
     * 通过主键获取对象
     * @param id
     * @return
     */
    T findById(Integer id);

    /**
     * 通过主键获取对象们
     * @param ids
     * @return
     */
    List<T> findAllById(Integer [] ids);
}
